Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.01.2015, 14:05
Аспирант
Отправить личное сообщение для kilohertz_. Посмотреть профиль Найти все сообщения от kilohertz_.
 
Регистрация: 07.12.2014
Сообщений: 31

XML ответ с сервера
Если с сервера посылать только строчку <status ... />, то скрипт ее понимает нормально. НО, если с сервера идет уже 2 строчки, то скрипт выдает ошибку: Uncaught TypeError: Cannot read property 'getElementsByTagName' of null. Что не так?

Ответ с сервера посылается так:
echo "
	<error>mysql_error</error>
	<status value='false'/>
	";

Обрабатывается так:
function processingXML() {
		if(xhr.readyState == 4) {
			var xml = xhr.responseXML;
			alert(xhr.responseText);
			object = document.getElementById(object + '_sysmsg');
			if(xml.getElementsByTagName('status')[0].getAttribute('value') == "true") {
				object.firstChild.nodeValue = messages.complete;
				object.setAttribute('class','green_message');
				object.parentNode.style.display = "block";
			} else if(xml.getElementsByTagName('status')[0].getAttribute('value') == "false") {
				object.firstChild.nodeValue = messages.failed + '('+ xml.getElementsByTagName('error')[0].firstChild.nodeValue +')';
				object.setAttribute('class','red_message');
				object.parentNode.style.display = "block";
			}
		}
	}
Ответить с цитированием
  #2 (permalink)  
Старый 07.01.2015, 14:11
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

kilohertz_., xml - гавно. Какие причины не использовать удобный формат JSON?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 07.01.2015, 14:13
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

В XML должен быть один корневой элемент. Например:
<response>
    <status value='true'/>
</response>

<response>
    <status value='false'/>
    <error>mysql_error</error>
</response>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 07.01.2015, 14:16
Аспирант
Отправить личное сообщение для kilohertz_. Посмотреть профиль Найти все сообщения от kilohertz_.
 
Регистрация: 07.12.2014
Сообщений: 31

PHP последней версии поддерживает JSON только как отдельное расширение же)
Лень заниматься им, да и ведь учусь, так что не помешает и XML знать, это же классика.
Спасибо за ответ!)
Ответить с цитированием
  #5 (permalink)  
Старый 07.01.2015, 14:26
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от kilohertz_.
PHP последней версии поддерживает JSON только как отдельное расширение же)
Ну и че? На всех хостингах все че нужно стоит. На локалку тож никто не запрещает ставить.
Сообщение от kilohertz_.
так что не помешает и XML знать
Да нахрен он тебе не вперся. С ним неудобно работать.

header('Content-Type: 'application/json');
echo json_encode(['status' => true]);

var response = JSON.parse(xhr.responseText);
if (response.status == true) {
    object.textContent = messages.complete;
    object.className = 'green_message';
} else {
    alert(response.error);
}
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 07.01.2015, 14:35
Аспирант
Отправить личное сообщение для kilohertz_. Посмотреть профиль Найти все сообщения от kilohertz_.
 
Регистрация: 07.12.2014
Сообщений: 31

Все-таки убедительно, подучу JSON
Ответить с цитированием
  #7 (permalink)  
Старый 08.01.2015, 11:44
Аспирант
Отправить личное сообщение для kilohertz_. Посмотреть профиль Найти все сообщения от kilohertz_.
 
Регистрация: 07.12.2014
Сообщений: 31

Кстати, как я прочитал, то в вашем примере с сервера придет ответ как массив, т.е. обращаться можно будеи и как response['status']?
И в чем разница битовых масок как массива и как объекта? *ответа не нашел*
Ответить с цитированием
  #8 (permalink)  
Старый 08.01.2015, 12:03
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от kilohertz_.
И в чем разница битовых масок как массива и как объекта?
массив и объект - это составные структуры. Какие еще битовые маски?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #9 (permalink)  
Старый 08.01.2015, 12:06
Аспирант
Отправить личное сообщение для kilohertz_. Посмотреть профиль Найти все сообщения от kilohertz_.
 
Регистрация: 07.12.2014
Сообщений: 31

Описание
string json_encode ( mixed $value [, int $options = 0 ] )
Возвращает строку, содержащую JSON-представление value.

Список параметров
value
value - значение, которое будет закодировано. Может быть любого типа за исключением resource.
Функция работает только с кодированными в UTF-8 данными.

options
Битовая маска составляемая из значений JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_BIGINT_AS_STRING, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICODE.
Ответить с цитированием
  #10 (permalink)  
Старый 08.01.2015, 12:16
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

kilohertz_., так это у функции параметр принимает совокупность масок. Вероятно, как "сумму" констант.

json_encode(array()); // []

json_encode(array(), JSON_FORCE_OBJECT); // {} (предположение)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ответ от сервера о окончании задачи Vit AJAX и COMET 13 17.06.2012 21:31
Как разложить ответ сервера по разным div-ам? brudershaft AJAX и COMET 0 23.04.2012 20:40
ответ сервера не сохраняется в глобальную переменную cyberpunk AJAX и COMET 2 06.03.2012 11:57
разборка xml ответа с сервера Jekel AJAX и COMET 3 17.10.2010 01:10
Ответ сервера в плугине ajaxForm отдается неправильно. IgorOk jQuery 11 13.12.2009 04:35